package com.neuedu.elmserver.controller;


import com.neuedu.elmserver.pojo.Cart;
import com.neuedu.elmserver.service.CartService;
import com.neuedu.elmserver.vo.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 购物车 前端控制器
 * </p>
 *
 * @author wyh
 * @since 2024-11-11
 */
@RestController
@RequestMapping("/cart")
@CrossOrigin
public class CartController {

    @Autowired
    private CartService cartService;

    // @RequestBody：将请求的json参数对象转为Java对象
    @PostMapping("/addCart")
    public ResultVO addCart(@RequestBody Cart cart) {
        return cartService.addCart(cart);
    }

    /**
     * 更新购物车
     * @param cart
     * @return
     * @RequestBody:将请求体(请求参数)的JSON数据类型转为Java对象
     */
    @PostMapping("/updateCart")
    public ResultVO updateCart(@RequestBody  Cart cart){
        return cartService.updateCart(cart);
    }

    /**
     * 查询某个用户在指定商家中的购物车列表
     * @param businessId
     * @param userId
     * @return
     */
    @GetMapping("/listCart")
    public ResultVO listCart(Integer businessId, Integer userId){
        return cartService.listCart(businessId, userId);
    }

    /**
     * 更新购物车
     * @param cart
     * @return
     * @RequestBody:将请求体(请求参数)的JSON数据类型转为Java对象
     */
    @PostMapping("/deleteCart")
    public ResultVO deleteCart(@RequestBody  Cart cart){
        return cartService.deleteCart(cart);
    }

    /**
     * 查询指定用户在所有商家中的购物车数量
     * @param userId
     * @return
     */
    @GetMapping("/cartBusinessCount")
    public ResultVO cartBusinessCount(Integer userId){
        return cartService.cartBusinessCount(userId);
    }

    /**
     * 查询某个用户在指定商家中的购物车详情列表
     * @param businessId
     * @param userId
     * @return
     */
    @GetMapping("/listCartDetails")
    public ResultVO listCartDetails(Integer businessId,Integer userId) {
        return cartService.listCartDetails(businessId,userId);
    }

    /**
     * 根据指定商家查询登录用户的购物车食品数量
     * @return
     */
    @GetMapping("/businessQuantity")
    public ResultVO BusinessQuantity(Integer businessId, Integer userId){
        return cartService.getBusinessQuantity(businessId, userId);
    }
}












